package org.zfx.vo.gitController;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Builder;
import lombok.Data;
import org.eclipse.jgit.merge.ResolveMerger;
import org.eclipse.jgit.revwalk.RevCommit;

import java.util.List;
import java.util.Map;
import java.util.Set;

@Data
@Builder
@ApiModel("git pull 接口出参")
public class PullResponse {
//    @ApiModelProperty("pull 相关 message 信息")
//    private String mergeResult;
//  信息示例如下：
//  Merge of revisions 7d3403cf1916d9185c4e5fb7c7309202b11eda0e, 7d3403cf1916d9185c4e5fb7c7309202b11eda0e
//  with base 7d3403cf1916d9185c4e5fb7c7309202b11eda0e using strategy recursive resulted in: Already-up-to-date.

    @ApiModelProperty("pull 状态")
    private String rebaseResultName;
    @ApiModelProperty("pull结果提示")
    private String message;
    @ApiModelProperty("获取rebase停止时的当前提交对象。如果rebase成功完成,则为null")
    private RevCommit currentCommit;
    @ApiModelProperty("获取因冲突而停止的路径列表。如果无冲突,则为空列表。")
    private List<String> conflicts;
    @ApiModelProperty("获取merge失败的路径及失败原因的映射。如果无失败,则为null。")
    private Set<Map.Entry<String, ResolveMerger.MergeFailureReason>> failingPaths;
    @ApiModelProperty("获取因有未提交变更而停止rebase的路径列表。如果无未提交变更,则为空列表。")
    private List<String> getUncommittedChanges;
}
//status
//OK:rebase成功完成。
//ABORTED:rebase被取消,HEAD被还原。
//STOPPED:rebase因冲突停止,必须abort、resolve或skip。
//EDIT:rebase在交互式rebase的上下文中停止以进行编辑。
//FAILED:rebase失败,HEAD被还原。
//UNCOMMITTED_CHANGES:仓库包含未提交的变更,rebase不是快进。
//CONFLICTS:目标HEAD的检出失败,产生冲突。
//UP_TO_DATE:已是最新,无需rebase。
//FAST_FORWARD:快进,HEAD指向新提交。